<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    
  </style>
</head>
<body>
  
</body>
<script>

  const p1 = createPromise("p1");
  const p2 = createPromise("p2");
  const p3 = createPromise("p3");

  // p1.then(res=>{
  //   console.log(res)
  // })
  // p1.catch(res=>{
  //   console.log(res)
  // })

  // p2.then(res=>{
  //   console.log(res)
  // })
  // p2.catch(res=>{
  //   console.log(res)
  // })

  // p3.then(res=>{
  //   console.log(res)
  // })
  // p3.catch(res=>{
  //   console.log(res)
  // })

  // 需求1：
  // p1成功后执行p2
  // p2失败后执行p3
  // 拿到p3的成功
  // p1.then(res=>{
  //   console.log(res);
  //   return p2
  // }).catch(res=>{
  //   console.log(res);
  //   return p3
  // }).then(res=>{
  //   console.log(res);
  // })

  // 需求2：
  // 3成功后执行1
  // 1成功后执行2
  // 拿到2的失败
  // p3.then(res=>{
  //   console.log(res);
  //   return p1;
  // }).then(res=>{
  //   console.log(res);
  //   return p2
  // }).catch(res=>{
  //   console.log(res);
  // })

  // 需求3：
  // 2失败后执行1
  // 1失败后执行3
  // 拿到3的成功
  // p2.catch(res=>{
  //   console.log(res);
  //   return p1
  // }).catch(res=>{
  //   console.log(res);
  //   return p3
  // }).then(res=>{
  //   console.log(res);
  // })


  // 需求4：...

  // ========

  // 成功：如果成功，那就依次执行
  // 出错：如果失败，跳过所有成功，直接报错

  p1.then(res=>{
    console.log(res);
    return p2
  }).then(res=>{
    console.log(res);
    return p3
  }).then(res=>{
    console.log(res);
  }).catch(res=>{
    console.log(res);
  })

  function createPromise(name){
    return new Promise((a, b)=>{
      setTimeout(()=>{
        a(name + " 成功了");
      }, Math.random()*100);

      setTimeout(()=>{
        b(name + "失败了");
      }, Math.random()*100);
    })
  }



</script>
</html>